10 REM GOLF HANDICAP 20 REM AL JOHNSON 25 REM 12302 COLERAINE CT 30 REM RESTON, VA 22091 35 REM SEND ME A CARD IF YOU LIKE IT OR 40 REM HAVE ANY SUGGESTIONS 50 REM REVISED NOV.28/86 J.CAIN 100 POKE53280,11:POKE53281,15 110 GOSUB8000 115 RL=25 120 DIM CR$(20,24),RD$(50,25),HG$(50,18),HF$(50,18),CU(25,23) 125 DIM HC(50,7),SC(4) 130 OPEN15,8,15,"I0":OPEN6,8,6,"0:GLF COURSE,S,R":GOSUB9600 140 IF EN<>0 THEN OM$="COURSE FILE NOT FOUND":GOTO220 150 INPUT#6,CC 160 FORX=1TOCC:FORY=1TO23:INPUT#6,CR$(X,Y):NEXTY:NEXTX 210 CLOSE6:CLOSE15 220 U1$="[164]":U2$="[164][164]":SP$=" " 230 U9$="[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]" 240 FORX=1TO25:READA,B,C:CU(X,1)=A:CU(X,2)=B:CU(X,3)=C:NEXTX 250 FORX=828TO828+10 :READA:POKEX,A:NEXTX 260 POKE850,22:POKE851,8:SYS828 270 PRINT"PRESS ANY KEY WHEN READY":GOSUB9200 490 GOTO5000 499 REM ** LIST COURSE NAMES 500 PRINT"[147]";TAB(13);"COURSES" 510 FORX=1TOCC 520 PRINT"";X;TAB(8);CR$(X,1);TAB(31);CR$(X,23) 540 NEXTX 550 PRINT"[151]ENTER NUMBER OF COURSE PLAYED" 553 INPUT"[151]OR _ IF COURSE NOT SHOWN";CX$:CX=VAL(CX$) 555 IF CX$="_" THEN RETURN 560 IF CX<1 OR CX>CC THEN PRINT"INVALID":GOTO550 570 RETURN 698 REM *****LOAD SUBROUTINE 700 PRINT"[147]LOADING GOLF FILE" 710 PRINT"[151]C[146] TO CONTINUE - OTHER FOR MENU" 720 GOSUB9200:IF K$<>"C" THEN OM$="NO LOAD":RETURN 730 OPEN15,8,15,"I0" 740 OPEN7,8,7,"0:GOLF DATA,S,R":GOSUB9600 750 IF AB$="Y"THEN OM$="NO ROUNDS FOUND":GOTO890 760 INPUT#7,RC 770 FORX=1TORC 780 FORY=1TO25:INPUT#7,RD$(X,Y):NEXTY 790 FORY=1TO18:INPUT#7,HG$(X,Y):NEXTY 840 FORY=1TO18:INPUT#7,HF$(X,Y):NEXTY 870 NEXTX 880 OM$="LOAD OK "+STR$(RC)+" ROUNDS" 890 CLOSE7:CLOSE15 900 RETURN 998 REM ** SAVE SUBROUTINE 1000 PRINT"[147]SAVE THE ROUNDS TO DISK" 1010 PRINT"[151]C[146] TO CONTINUE - OTHER FOR MENU" 1020 GOSUB9200:IFK$<>"C" THEN OM$="SAVE NOT DONE":RETURN 1030 OPEN15,8,15,"I0" 1040 OPEN8,8,8,"@0:GOLF DATA,S,W":GOSUB9600 1050 IF AB$="Y" THEN OM$="DISK ERROR - "+EM$":GOTO1130 1055 SV$[178]"Y" 1060 [152]8,RC 1070 [129]X[178]1[164]RC 1080 [129]Y[178]1[164]25:[152]8,RD$(X,Y):[130]Y 1090 [129]Y[178]1[164]18:[152]8,HG$(X,Y):[130]Y 1100 [129]Y[178]1[164]18:[152]8,HF$(X,Y):[130]Y 1110 [130]X 1120 OM$[178]"SAVE OK - "[170][196](RC)[170]" ROUNDS" 1130 [160]8:[160]15 1140 [142] 1198 [143] **** BACK UP SUBROUTINE 1200 [153]"LOADBACKUP GOLF ROUNDS" 1210 [153]"POKECWAIT TO CONTINUE - OTHER FOR MENU":[141]9200 1220 [139]K$[179][177]"C" [167] OM$[178]"NO BACKUP":[142] 1230 [153]"INSERT BACKUP DISK 1240 PRINT"HIT A KEY[151]":GOSUB9200 1260 OPEN15,8,15,"I0" 1270 OPEN8,8,8,"GOLF DATA-BK,S,W":GOSUB9600 1280 IF AB$<>"Y" THEN 1310 1290 OM$="BKUP DISK ERROR - "+EM$:OP$="INSERT MAIN DISK OR 'Q'" 1300 CLOSE8:CLOSE15:RETURN 1310 GOSUB1060 1315 BK$="Y" 1320 OM$="BACKUP OK - "+STR$(RC)+" ROUNDS" 1330 OP$="INSERT MAIN DISK OR QUIT" 1340 RETURN 1498 REM *** FILL SCREEN FOR DISPLAY 1500 PRINT"[147]";TAB(10);"PERSONAL GOLF HANDICAP" 1510 PRINT"";TAB(15);"ROUNDS PLAYED" 1520 PRINTTAB(6);"[152]COURSE" 1530 PRINT" PAR";TAB(9);"RATING";TAB(22);"DATE PLAYED" 1540 PRINTTAB(10);"SC G F";TAB(31);"SC G F" 1550 FORX=1TO7STEP2 1560 PRINT" HOLE ";X;TAB(23);"HOLE ";X+1 1570 NEXTX 1580 PRINT" HOLE 9";TAB(23);"HOLE 10" 1590 FORX=11TO17 STEP2 1600 PRINT" HOLE";X;TAB(23);"HOLE";X+1 1610 NEXTX 1620 PRINT"[152]";TAB(5);"PUTTS SCORE DFRNTL" 1630 PRINT"[152]A[146]DD M[146]ODIFY N[146]EXT B[146]ACK D[146]EL Q[146]UIT" 1650 RETURN 1798 REM PUT UNDERLINE IN TABLE SUBR 1800 RD$(CP,2)=U2$+U2$ 1810 RD$(CP,3)=U2$+U2$ 1830 FORX=1TO18:RD$(CP,X+3)=U2$:HG$(CP,X)=U1$:HF$(CP,X)=U1$:NEXTX 1880 RD$(CP,23)=U2$ 1890 RD$(CP,24)=U2$+U1$ 1895 RETURN 1998 REM ** FILL DATA AREAS OF SCREEN 2000 PRINT"[151] #";STR$(CP):PRINT"OF ";STR$(RC) 2003 POKE850,3:POKE851,13:SYS828 2008 IF LEFT$(CN$,1)<>"[164]"THEN PP=VAL(RD$(CP,1)):CN$=CR$(PP,1) 2010 PRINT"[151]";CN$;"[146] " 2020 FORX=2TO25 2030 POKE850,CU(X,1):POKE851,CU(X,2):SYS828 2035 PP=CU(X,3):PRINTLEFT$(SP$,PP);:SYS828 2040 PRINTRD$(CP,X) 2050 IF X<4 OR X>21 THEN 2100 2060 POKE850,CU(X,1):POKE851,CU(X,2)+4:SYS828 2070 PRINTHG$(CP,X-3) 2080 POKE850,CU(X,1):POKE851,CU(X,2)+6:SYS828 2090 PRINTHF$(CP,X-3) 2100 NEXTX 2110 RETURN 2198 REM ** CALC BIRDS PARS ETC 2200 FOR X=4 TO 21 2203 W9=VAL(RD$(CP,1)) 2210 W=VAL(CR$(W9,X+1))-VAL(RD$(CP,X)) 2220 IF W=2 THEN EG=EG+1 2230 IF W=1 THEN BI=BI+1 2240 IF W=0 THEN PA=PA+1 2250 IF W=-1 THEN BO=BO+1 2260 IF W=-2 THEN DB=DB+1 2270 IF W<-2 THEN OT=OT+1 2280 NEXTX 2285 IF S$="Y" THEN RETURN 2290 POKE850,19:POKE851,2:SYS828 2300 PRINT"EGL";EG;" BIRD";BI;" PAR";PA; 2310 PRINT" BOG";BO;" DBL";DB;"[151]" 2320 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0 2330 RETURN 2398 REM CALC, STORE AND PRINT SCORES 2400 SC=0:PRINT"[151]" 2410 FORX=4TO21:SC=SC+VAL(RD$(CP,X)):NEXT 2420 RD$(CP,24)=STR$(SC) 2425 POKE850,CU(24,1):POKE851,CU(24,2):SYS828:PRINTSTR$(SC) 2430 CZ=VAL(RD$(CP,1)) 2440 HD=(SC-VAL(CR$(CZ,3))) 2443 PP=(INT(HD*10)/10):RD$(CP,25)=STR$(PP) 2445 POKE850,CU(25,1):POKE851,CU(25,2):SYS828 2447 PRINT" ":SYS828:PRINTRD$(CP,25) 2450 POKE850,CU(22,1):POKE851,CU(22,2):SYS828 2460 PRINTCR$(CZ,2):RD$(CP,22)=CR$(CZ,2) 2470 RD$(CP,2)=CR$(CZ,3) 2480 POKE850,CU(2,1):POKE851,CU(2,2):SYS828:PRINT" ":SYS828 2490 PRINT RD$(CP,2) 2500 RETURN 2598 REM INPUT SUBR TO ADD A RND 2600 POKE850,CU(3,1):POKE851,CU(3,2):SYS828 2603 FP=3 2610 PRINT"?[157][151]";:GOSUB9000 2620 RD$(CP,3)=AN$ 2630 FORX=4TO21 2640 POKE850,CU(X,1):POKE851,CU(X,2):SYS828 2645 PRINT"?[151][157]"; 2647 FP=X 2650 GOSUB9000 2660 RD$(CP,X)=AN$ 2670 POKE851,CU(X,2)+4:SYS828:PRINT"?[151][157]"; 2680 GOSUB8800 2685 IF AN$<>"Y"THEN HG$(CP,X-3)="N":GOTO2695 2690 HG$(CP,X-3)="Y" 2695 PRINTHG$(CP,X-3); 2700 POKE851,CU(X,2)+6:SYS828:PRINT"?[151][157]"; 2710 GOSUB8800 2715 IF AN$<>"Y"THENHF$(CP,X-3)="N":GOTO2725 2720 HF$(CP,X-3)="Y" 2725 PRINTHF$(CP,X-3); 2730 NEXTX 2740 POKE850,CU(23,1):POKE851,CU(23,2):SYS828 2750 PRINT"?[151][157]"; 2760 GOSUB9000 2770 RD$(CP,23)=AN$ 2780 RETURN 2900 POKE850,20:POKE851,6:SYS828 2910 RETURN 2950 POKE850,20:POKE851,6:SYS828 2960 PRINTSP$ 2970 RETURN 3000 POKE850,CU(FP,1):POKE851,CU(FP,2):SYS828 3010 PRINT"?[151][157]"; 3020 GOSUB9000 3030 IF VAL(AN$)<>0 THEN RD$(CP,FP)=AN$:GOTO3050 3040 PRINTRD$(CP,FP);"[155]" 3050 IF FP<4 OR FP>21 THEN PRINT"":RETURN 3060 POKE851,CU(FP,2)+4:SYS828 3070 PRINT"?[151][157]"; 3080 GOSUB8800 3090 IF AN$<>"" THEN HG$(CP,FP-3)=AN$:PRINTAN$:GOTO3110 3100 PRINT"[151]";HG$(CP,FP-3);"[155]" 3110 POKE851,CU(FP,2)+6:SYS828 3120 PRINT"?[151][157]";:GOSUB8800 3130 IF AN$<>"" THEN HF$(CP,FP-3)=AN$:PRINTAN$:GOTO3150 3140 PRINT"[151]";HF$(CP,FP-3);"[152]" 3150 PRINT"[155]" 3160 RETURN 4990 REM **************** 4992 REM * MAIN PROG MENU 4994 REM **************** 5000 POKE53280,11:PRINT"[147]";TAB(15);"GOLF MENU" 5010 PRINT"[151]LOAD GOLF FILE";TAB(25);"L" 5020 PRINT"SAVE GOLF FILE";TAB(25);"S" 5030 PRINT"BACKUP GOLF FILE";TAB(25);"B" 5040 PRINT"ROUNDS";TAB(25);"R" 5050 PRINT"HANDICAP";TAB(25);"H" 5060 PRINT"STATISTICS";TAB(25);"C" 5070 PRINT"QUIT";TAB(25);"Q" 5080 PRINT"";OM$;"[146][151]":OM$="":AB$="" 5090 PRINT"";OP$;"[146][151]":OP$="" 5100 GOSUB9200 5110 IF K$="L" THEN GOSUB700:GOTO5000 5120 IF K$="S" THEN GOSUB1000:GOTO5000 5130 IF K$="B" THEN GOSUB1200:GOTO5000 5140 IF K$="R" THEN 5300 5150 IF K$="H" THEN 6200 5160 IF K$="C" THEN 6800 5170 IF K$="Q" THEN 7400 5180 GOTO5100 5300 IF RC=0THENCN$=U9$ 5310 IF RC<>0 THEN CX=VAL(RD$(1,1)):CN$=CR$(CX,1) 5320 GOSUB1500: REM FILL SCREEN 5325 CP=1:POKE53280,6 5340 GOSUB2000: REM DATA TO SCREEN 5360 IF RC<>0 THEN GOSUB2200:GOSUB2400:REM COUNT BIRD PAR ETC 5370 IF RC=0THENGOSUB2900:PRINT"NO ROUNDS LOADED[151]" 5400 REM DUMMY LINE 5405 GET W$:IF W$="" THEN 5405 5410 IF W$="A" THEN POKE53280,2:GOTO5500 5420 IF W$="N" THEN POKE53280,6:GOTO5650 5430 IF W$="B" THEN POKE53280,6:GOTO5700 5440 IF W$="Q" THEN 5000 5450 IF W$="D"THEN POKE53280,11:GOTO5760 5460 IF W$="M" THEN POKE53280,7:GOTO6000 5470 GOTO5405 5490 REM *** ADD A ROUND 5500 GOSUB2950:GOSUB500: REM GET COURSE NAME 5503 IF CX=0THENGOSUB1500:GOSUB2900:PRINT"COURSE NOT ON FILE[151]":GOTO5405 5505 CN$=CR$(CX,1):CP=RC+1:RD$(CP,1)=CX$:CH$="Y" 5520 GOSUB1800: REM UNDERLINES IN TABLE 5530 GOSUB1500: REM DISPLAY SCREEN 5540 GOSUB2000:REM DISPLAY DATA ON SCR 5550 GOSUB2600: REM GET DATA 5560 GOSUB2400: REM CALC SCORES 5570 GOSUB2200: REM CALC BIRD PAR ETC 5580 RC=RC+1 5590 GOTO5405 5648 REM *** VIEW NEXT ROUND 5650 GOSUB2950:IF CP+1>RC THEN 5400 5660 CP=CP+1:GOSUB2000:GOSUB2400:GOSUB2200 5670 GOTO5400 5698 REM *** BACK 1 RECORD 5700 GOSUB2950:IF CP-1<1 THEN 5400 5710 CP=CP-1:GOSUB2000:GOSUB2400:GOSUB2200 5720 GOTO5400 5760 GOSUB2900:PRINT"ARE YOU SURE? (Y/N)[146]" 5770 GETS$:IFS$="" THEN 5770 5780 IF S$<>"Y"THEN GOSUB2950:GOTO5400 5790 GOSUB2900:PRINT"O.K. DELETING " 5800 FORX=CPTORC+1 5810 FOR Y=1TORL 5820 RD$(X,Y)=RD$(X+1,Y) 5830 NEXTY:NEXTX 5840 FORX=CPTORC+1 5850 FORY=1TO18 5860 HG$(X,Y)=HG$(X+1,Y):HF$(X,Y)=HF$(X+1,Y) 5870 NEXTY:NEXTX 5880 RC=RC-1 5890 IF CP>RC THEN CP=RC 5900 GOSUB2000:GOSUB2400:GOSUB2200 5910 GOSUB2950:GOSUB2900:PRINT"DONE" 5920 FORX=1TO500:NEXT 5930 GOSUB2950:CH$="Y" 5940 GOTO 5400 5990 REM *** MODIFY ROUND 6000 GOSUB2950:POKE850,23:POKE851,3:SYS828 6010 PRINT"D[146]ATE P[146]UTTS 1-18[146] Q[146]UIT N[146]AME T[146]BL" 6020 GOSUB9400:GOSUB2950 6030 IF AN$="D" THEN FP=3:GOTO6080 6033 IF AN$="P" THEN FP=23:GOTO6080 6035 IF AN$<>"N"THEN 6043 6037 GOSUB500:IFCX=0 THEN 6040 6039 RD$(CP,1)=CX$ 6040 GOSUB1500:GOSUB2000:GOSUB2400:GOSUB2200 6041 GOSUB2900:PRINT"DONE":GOTO6020 6043 IF AN$<>"T" THEN 6050 6045 GOSUB2400:GOSUB2900:PRINT"O.K.":GOTO6020 6050 IF VAL(AN$)>00 AND VAL(AN$)<19 THEN FP=VAL(AN$)+3:GOTO6080 6060 IF AN$="Q" THEN 6100 6070 GOTO6020 6075 CH$="Y" 6080 GOSUB3000 6086 GOSUB2900:PRINT"O.K." 6090 GOTO6020 6100 GOSUB2400:GOSUB2200 6110 POKE850,23:POKE851,3:SYS828 6120 PRINTSP$:POKE53280,11:GOTO5400 6190 REM ***************** 6193 REM * CALC HANDICAP RTN 6195 REM ***************** 6200 PRINT"[147]CALCULATE HANDICAP" 6210 PRINT"F1[146][151] CALCULATE OVERALL HANDICAP" 6220 PRINT"F3[146][151] HANDICAP FOR ONE COURSE" 6230 PRINT"F7[146][151] MAIN MENU" 6240 PRINT"";OM$;"[146][151]":OM$="":OC$="":RX=0:PS=0 6250 GOSUB9200 6260 IF K$="[136]" THEN 5000: REM F7 6270 IF K$<>"[133]"ANDK$<>"[134]" THEN 6250 6280 IF K$="[134]" THEN OC$="Y":GOSUB500:PRINT"[147]" 6285 IF K$="[134]"ANDCX=0 THEN OM$="NOT DONE":GOTO6200 6290 IF K$="[133]" AND RC<5 THEN OM$="NOT ENOUGH ROUNDS TO CALCULATE":GOTO6200 6300 PRINT"[147]CALCULATING[151]" 6303 IF RC<=20 THEN PX=1 6305 IF RC>20THENPX=RC-19 6310 FORX=1TO20:FORY=1TO4:HC(X,Y)=0:NEXTY:NEXTX 6320 FORX=RC TO PX STEP-1 6330 IF OC$="Y"THENIFRD$(X,1)<>CX$GOTO6370 6340 PS=PS+1:HC(PS,1)=VAL(RD$(X,25)) 6350 HC(PS,2)=VAL(RD$(X,1)):HC(PS,3)=VAL(RD$(X,3)) 6360 HC(PS,4)=VAL(RD$(X,24)):RX=RX+1 6370 NEXTX 6380 IF RX<5 THEN OM$="MIN 5 ROUNDS REQUIRED":GOTO6200 6390 REM *** NOW SORT ON DIFFERENTIAL 6400 FORX=1TORX-1 6410 IF HC(X,1)<=HC(X+1,1) THEN 6455 6420 FORY=1TO4:SC(Y)=HC(X,Y):NEXTY 6430 FOR Y=1TO4:HC(X,Y)=HC(X+1,Y):NEXTY 6440 FORY=1TO4:HC(X+1,Y)=SC(Y):NEXTY 6450 SR$="Y" 6455 NEXTX 6460 IF SR$="Y"THEN SR$="":GOTO6400 6470 REM DETERMINE # DIFFS NEEDED 6480 IF RX=5 THEN ND=1:GOTO6520 6490 IF RX=6 THEN ND=2:GOTO6520 6500 IF RX>20 THEN ND=10:GOTO6520 6510 ND=INT(RX/2) 6520 TD=0:FORX=1TOND:TD=TD+HC(X,1):NEXTX 6530 TD=(TD/ND)*.96 6540 TD=INT(TD+.5) 6550 PRINT"[147]YOUR HANDICP IS ";TD; 6560 IF OC$="Y" THEN PRINT" FOR ";CR$(CX,1) 6570 IF OC$<>"Y"THEN PRINT" FOR ALL COURSES" 6580 PRINT"";ND;" DIFFERENTIALS USED FROM ";RX;" ROUNDS" 6590 PRINT"";TAB(8);"F5[146] TO SEE ROUNDS USED" 6600 GOSUB9200:IFK$<>"[135]" THEN 6200 6610 PRINT"":TM=0 6620 FORX=1TORX 6625 DT=(LEN(STR$(HC(X,3))))-2:DT$=LEFT$(STR$(HC(X,3)),DT)+"-" 6626 DX$=STR$(HC(X,3)):DT$=DT$+MID$(DX$,DT+1) 6630 W1=HC(X,2):PRINT"[151]";CR$(W1,1);TAB(22);DT$; 6640 PRINTTAB(28);STR$(HC(X,4));TAB(32);STR$(HC(X,1)); 6650 IF X<=ND THEN PRINT" _":GOTO6670 6660 PRINT 6670 TM=TM+1:IFTM<9 THEN 6700 6680 TM=0:PRINT"";TAB(7);"MORE - PRESS A KEY[151]" 6690 GOSUB9200:PRINT"[147]" 6700 NEXTX 6710 PRINTTAB(7);"ALL - PRESS A KEY[151]":GOSUB9200:GOTO5000 6800 PRINT"[147]";TAB(9);"PERSONAL GOLF STATISTICS" 6810 PRINT"F1[146] [151]OVERALL BY COURSE" 6820 PRINT"F3[146] [151]PARS BIRDS ETC" 6870 PRINT"F8[146] [151]RETURN TO MAIN MENU" 6880 GOSUB9200 6890 IF K$="[140]" THEN 5000:REM F8 6900 IF K$="[133]" THEN 6950: REM F1 6910 IF K$="[134]"THEN 7500:REM F3 6940 GOTO6880 6950 PRINT"[147]":POKE850,10:POKE851,11:SYS828 6960 PRINT"CALCULATING STATS[151]" 6970 FORX=0TO20:FORY=0TO5:HC(X,Y)=0:NEXTY:NEXTX 6980 FORX=1TORC 6990 WX=VAL(RD$(X,1)):HC(WX,1)=HC(WX,1)+1:REM ROUNDS 7000 HC(0,1)=HC(0,1)+1 7010 HC(WX,2)=HC(WX,2)+VAL(RD$(X,24)) 7020 HC(0,2)=HC(0,2)+VAL(RD$(X,24)) 7030 HC(WX,3)=HC(WX,3)+VAL(RD$(X,23)) 7040 HC(0,3)=HC(0,3)+VAL(RD$(X,23)) 7050 FOR Y=1 TO 18 7060 IF HG$(X,Y)<>"Y" THEN 7090 7070 HC(WX,4)=HC(WX,4)+1 7080 HC(0,4)=HC(0,4)+1 7090 IF HF$(X,Y)<>"Y" THEN 7120 7100 HC(WX,5)=HC(WX,5)+1 7110 HC(0,5)=HC(0,5)+1 7120 NEXTY 7130 NEXTX 7140 PRINTTAB(10);"[147]OVERALL AVERAGES[151]" 7150 PRINT" CRS RND SCORE PUTT HG % HF %[151]" 7160 FORX=1TO20 7170 IFHC(X,1)=0 THEN 7300 7180 PRINT" ";CR$(X,23);TAB(8);HC(X,1); 7190 W1=HC(X,2)/HC(X,1):W1=INT((W1+.05)*10):W1=W1/10 7200 PRINTTAB(13);W1; 7210 W1=HC(X,3)/HC(X,1):W1=INT((W1+.05)*10):W1=W1/10 7220 PRINTTAB(21);W1; 7230 W1=HC(X,4)/(HC(X,1)*18) 7240 W1=INT((W1+.05)*1000):W1=W1/10 7250 PRINTTAB(27);W1; 7260 W1=HC(X,5)/(HC(X,1)*18) 7270 W1=INT((W1+.05)*1000):W1=W1/10 7280 PRINTTAB(33);W1 7290 IF X=0 THEN RETURN 7300 NEXTX 7310 PRINT"TOTAL";TAB(8);HC(0,1); 7320 X=0:GOSUB7190 7330 POKE850,23:POKE851,17:SYS828 7340 PRINT"PRESS A KEY[155]" 7350 GOSUB9200:GOTO6800 7400 IF SV$="Y" THEN 7450 7410 IF CH$<>"Y" THEN 7450 7420 SV$="Y":OM$="CHANGES MADE - NO SAVE DONE" 7430 OP$="'Q' AGAIN TO VERIFY":GOTO5000 7450 PRINT"[147]END OF RUN":END 7500 PRINT"[147]A[146]CTUAL OR AV[146]ERAGE" 7510 GOSUB9200:IFK$<>"A"ANDK$<>"V" THEN 7500 7520 W$=K$:PRINT"CALCULATING":S$="Y" 7523 FORX=0TO30:FORY=0TO7:HC(X,Y)=0:NEXTY:NEXTX 7530 FORCP=1TORC 7540 GOSUB2200 7550 HC(W9,1)=HC(W9,1)+1 7555 HC(W9,2)=HC(W9,2)+EG 7560 HC(W9,3)=HC(W9,3)+BI 7565 HC(W9,4)=HC(W9,4)+PA 7570 HC(W9,5)=HC(W9,5)+BO 7575 HC(W9,6)=HC(W9,6)+DB 7580 HC(W9,7)=HC(W9,7)+OT 7590 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0 7600 NEXTCP 7610 FORX=1TO20:IFHC(X,1)=0THEN7630 7620 FORY=1TO7:HC(0,Y)=HC(0,Y)+ HC(X,Y):NEXTY 7630 NEXTX 7640 IF W$="A" THEN LC=0:T$="N":GOTO7710 7650 FORX=0TO20:IFHC(X,1)=0THEN7700 7660 FORY=2TO7 7670 W=INT((HC(X,Y)/HC(X,1))*10) 7680 HC(X,Y)=W/10 7690 NEXTY 7700 NEXTX:S$="N":LC=0:T$="N" 7710 PRINT"[147] CRS RND EGL BRD PAR BOG DBL >DB[151]" 7720 FORX=1TO20:IFHC(X,1)=0THEN7810 7730 PRINTCR$(X,23);TAB(6);HC(X,1); 7740 Z=5:FORY=2TO7 7750 PRINTTAB(Z+5);HC(X,Y); 7760 Z=Z+5:NEXTY:LC=LC+1:PRINT 7770 IFLC<15 THEN 7800 7780 LC=0:GOSUB9190 7790 PRINT"[147] CRS RND EGL BRD PAR BOG DBL >DB[151]" 7800 IF T$="Y"THENRETURN 7810 NEXTX 7820 PRINT"TOTAL";TAB(6);HC(0,1); 7830 X=0:T$="Y":GOSUB7740 7840 GOSUB9190:GOTO6800 8000 PRINT"[147]";TAB(8);"PERSONAL GOLF STATISTICS" 8010 PRINTTAB(8);"HANDICAP AND STATISTICS" 8020 PRINT"[151] THIS PROGRAM ALLOWS YOU TO ENTER DATA" 8030 PRINT" ABOUT A ROUND OF GOLF. YOU MAY SEE" 8040 PRINT" YOUR HANDICAP AND OTHER ASSORTED" 8050 PRINT" STATISTICS." 8060 PRINT"FOLLOW THE MENUS TO ENTER OR MODIFY" 8070 PRINT"INFORMATION. A RED QUESTION MARK (?[151])" 8080 PRINT"WILL SHOW YOU WHERE THE CURSOR IS. IF" 8090 PRINT"YOU ENTER LESS THAN THE MAX NUMBER OF" 8100 PRINT"CHARACTERS, PRESS RETURN[151]." 8110 PRINT"YOU WILL BE ASKED TO ENTER THE SCORE " 8120 PRINT"ON EACH HOLE, AS WELL AS WHETHER YOU" 8130 PRINT"HIT THE GREEN AND FAIRWAY. PRESSING" 8140 PRINT"RETURN FOR THE LAST TWO ASSUMES NO." 8160 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0:SC=0:CZ=0:HD=0:PP=0 8200 RETURN 8798 REM *** GETS FOR HF AND HG 8800 POKE198,0:A$="":AN$="" 8810 GETA$:IFA$="" THEN 8810 8820 IF A$=CHR$(20) THEN 8810 8830 IF A$=CHR$(13)THEN RETURN 8840 AN$=A$:RETURN 8998 REM *** GETS FOR SCORES AND STUFF 9000 POKE198,0:A$="":AN$="":TM=0 9010 GETA$:IF A$="" THEN 9010 9020 IF A$=CHR$(20) THEN 9010 9030 IF A$=CHR$(13) ANDTM=0THEN9010 9035 IF A$=CHR$(13) THEN RETURN 9040 IF A$<"0"ORA$>"9"THEN 9010 9050 PRINTA$; 9060 AN$=AN$+A$:TM=TM+1 9070 IF TM=CU(FP,3)THEN RETURN 9080 GOTO9010 9190 POKE850,22:POKE851,7:SYS828:PRINT"PRESS A KEY[151]" 9200 GETK$:IFK$="" THEN 9200 9210 RETURN 9398 REM *** INP FOR MODIFY RTN 9400 POKE198,0:AN$="":A$="":TM=0 9410 GETA$:IFA$="" THEN 9410 9413 IF A$=CHR$(20) THEN 9410 9415 IF A$=CHR$(13)THENRETURN 9420 IF(A$="D"ORA$="P"ORA$="Q")ANDTM=0THENAN$=A$:RETURN 9422 IF(A$="N"ORA$="T")ANDTM=0THENAN$=A$:RETURN 9430 TM=TM+1:IFA$>"0"ANDA$<"9"THEN9440 9432 IFA$="9"ANDTM=1THENTM=2:GOTO9440 9434 IF A$="0"ANDTM=2 THEN RETURN 9435 GOTO 9410 9440 AN$=AN$+A$ 9450 IF TM=2 THEN RETURN 9460 GOTO9410 9600 INPUT#15,EN,EM$ 9610 IF EN=0 THEN RETURN 9620 AB$="Y":RETURN 10000 DATA 2,13,20,4,16,4,4,34,4 10010 DATA 8,10,2,8,31,2 10020 DATA 9,10,2,9,31,2 10030 DATA 10,10,2,10,31,2 10040 DATA 11,10,2,11,31,2 10050 DATA 12,10,2,12,31,2 10060 DATA 13,10,2,13,31,2 10070 DATA 14,10,2,14,31,2 10080 DATA 15,10,2,15,31,2 10090 DATA 16,10,2,16,31,2 10100 DATA 4,5,2,18,11,2 10110 DATA 18,21,3,18,33,4 10998 REM M/L FOR CURSOR 11000 DATA 174,82,03,172,83,03,24,32,240,255,96 12000 OPEN15,8,15,"S:GOLF HANDICAP":CLOSE15:SAVE"GOLF HANDICAP",8